<?php

//装饰模式
//动态的给一个对象添加一些额外的职责，就增加功能来说，装饰模式比生成子类更加灵活
//为已有功能添加更多功能的一种方式。
//当系统需要新功能时，是在旧类中修改代码还是添加新类装饰旧代码。

require_once '../autoload.php';

$person = new Person();
$person->setName('Fitz');

$jacket = new Jacket();
$tshirt = new Tshirt();

$jacket->decorate($person);
$tshirt->decorate($jacket);

$tshirt->show();